package com.jnc.plug.mybatis.mp.generator.config;

import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

/**
 * @Description
 * @Author fanlei
 * @Version 1.0
 * @Date 2019/9/28
 */
public class CustomStrategyConfig {
    private AutoGenerator mpg;

    public CustomStrategyConfig(AutoGenerator mpg) {
        this.mpg = mpg;
    }

    public void invoke() {
        // 策略配置
        mpg.setStrategy(new StrategyConfig()
                // .setCapitalMode(true)// 全局大写命名
                // .setDbColumnUnderline(true)//全局下划线命名
                .setTablePrefix(Context.tablePrefix)// 此处可以修改为您的表前缀
                .setNaming(Context.naming)// 表名生成策略
                .setInclude(Context.include) // 需要生成的表
                .setExclude(Context.exclude) // 排除生成的表
                // 自定义实体父类
                .setSuperEntityClass(Context.superEntityClass)
                // 自定义实体，公共字段(不在生成实体中展示)
                .setSuperEntityColumns(Context.superEntityColumns)
                // Boolean类型字段是否移除is前缀处理
                .setRestControllerStyle(Context.restControllerStyle)
                .setEntityLombokModel(Context.entityLombokModel)
                //移除前缀
                .setEntityBooleanColumnRemoveIsPrefix(Context.entityBooleanColumnRemoveIsPrefixtrue));
        // 自定义 mapper 父类
        // .setSuperMapperClass("com.baomidou.demo.TestMapper")
        // 自定义 service 父类
        // .setSuperServiceClass("com.baomidou.demo.TestService")
        // 自定义 service 实现类父类
        // .setSuperServiceImplClass("com.baomidou.demo.TestServiceImpl")
        // 自定义 controller 父类
        // .setSuperControllerClass("com.baomidou.demo.TestController")

        // 【实体】是否生成字段常量（默认 false）
        // public static final String ID = "test_id";
        // .setEntityColumnConstant(true)
        // 【实体】是否为构建者模型（默认 false）
        // public User setName(String name) {this.name = name; return this;}
        // .setEntityBuilderModel(true)
        // 【实体】是否为lombok模型（默认 false）<a href="https://projectlombok.org/">document</a>

        // .setEntityBooleanColumnRemoveIsPrefix(true)
        // .setControllerMappingHyphenStyle(true)
    }
}
